package com.rzhkj.box.entity;

import com.alibaba.fastjson.JSON;
import lombok.Data;

import java.util.*;

/**
 * 请求body体
 * Created by lixin on 2018/7/10.
 */
@Data
public class BoxFile {
    private boolean isCache;//是否缓存
    private boolean isCover;//是否覆盖
    private Integer size;//大小
    private String mediaType;//类型
    private String file;//文件 一般本base64字符串
    private String namespace;//命名空间
    private String customFileName;//自定义名称
    private String compressType;//压缩类型
    private String notifyUrl;//回调地址 ; 号隔开
    private String notifyData;//回调数据
    private String notifyContentType;//回调返回数据类型

    //获得后缀
    public String suffix() {
        MediaType mediaTypeEnum = null;
        if (mediaType != null) {
            mediaTypeEnum = MediaType.getEnum(mediaType);
        }
        return mediaTypeEnum == null ? MediaType.JPG.name().toLowerCase() : mediaTypeEnum.name().toLowerCase();
    }

    //获取通知回调集合
    public List<String> listNotifyUrl() {
        List<String> notifyUrls = null;
        if (notifyUrl != null && notifyUrl.contains(";")) {
            String[] strs = notifyUrl.split(";");
            notifyUrls = Arrays.asList(strs);
        }
        return notifyUrls == null ? new ArrayList<>() : notifyUrls;
    }

    //获取压缩类型集合
    public List<String> listCompressType() {
        List<String> compressTypeEnumList = null;
        if (compressType != null) {
            String[] compressTypeArray = compressType.split(";");
            compressTypeEnumList = Arrays.asList(compressTypeArray);
        }
        return compressTypeEnumList == null ? new ArrayList<>() : compressTypeEnumList;
    }

    //获得文件大小
    public Integer genSize() {
        if (file != null) {
            int i = file.indexOf(",");
            String str = null;
            if (i > 0) {
                str = file.substring(i + 1); // 1.需要计算文件流大小，首先把头部的data:image/png;base64,（注意有逗号）去掉。
            }
            Integer equalIndex = str.indexOf("=");//2.找到等号，把等号也去掉
            if (str.indexOf("=") > 0) {
                str = str.substring(0, equalIndex);
            }
            Integer strLength = str.length();//3.原来的字符流大小，单位为字节
            Integer size = strLength - (strLength / 8) * 2;//4.计算后得到的文件流大小，单位为字节
            return size;
        }
        return 0;
    }

}
